
#pragma once

#ifndef __MSCTRL_FTL_OBJECT_HH__
#define __MSCTRL_FTL_OBJECT_HH__

namespace MsCtrl::FTL {

class AbstractFTL;
class AbstractJobManager;

namespace Mapping {

class AbstractMapping;

}

namespace BlockAllocator {

class AbstractAllocator;

}

//! Encapsulates all FTL models
struct FTLObjectData {
  AbstractFTL *pFTL;
  Mapping::AbstractMapping *pMapping;
  BlockAllocator::AbstractAllocator *pAllocator;
  AbstractJobManager *pJobManager;

  FTLObjectData()
      : pFTL(nullptr),
        pMapping(nullptr),
        pAllocator(nullptr),
        pJobManager(nullptr) {}
};

}  // namespace MsCtrl::FTL

#endif
